/*
 * Copyright 2016. chenshufei
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package sz.szsmk.citizencard.mvp.dzsmkpresenter;

import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import sz.szsmk.citizencard.ioc.dzsmkcompontent.DaggerPresenterComponent;
import sz.szsmk.citizencard.ioc.dzsmkcompontent.PresenterComponent;
import sz.szsmk.citizencard.ioc.dzsmkmodule.PresenterModule;
import sz.szsmk.citizencard.mvp.BasePresenter;
import sz.szsmk.citizencard.mvp.MvpView;
import sz.szsmk.citizencard.retrofitrxjava.DZSmkAppInit;
import sz.szsmk.citizencard.retrofitrxjava.newversion.ApiCallback;
import sz.szsmk.citizencard.retrofitrxjava.newversion.SubscriberCallBack;

/**
 * <br /> author: chenshufei
 * <br /> date: 16/10/26
 * <br /> email: chenshufei2@sina.com
 */
public class AppBasePresenter<V extends MvpView> extends BasePresenter<V> {

    public PresenterComponent getComponent() {
        return DaggerPresenterComponent.builder()
                .presenterModule(new PresenterModule(this))
                .applicationComponent(DZSmkAppInit.getInstance().getComponent())
                .build();
    }


    public <T> void addSubscription(Observable weather , ApiCallback<T> apiCallback ) {
        addSubscription(weather
                .subscribeOn(Schedulers.io()) //被观察者observable是在io线程里处理的
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new SubscriberCallBack(apiCallback)));
    }


}
